Colors are defined by light wavelengths. A particular set of wavelengths of light corresponds to one true color. Representing an image, however, as a collection of light wavelengths is often inconvenient for image processing. Therefore, a variety of systems have been developed to represent images in data formats that are more convenient for storing, displaying, and otherwise manipulating images. Each of these systems can be referred to as a color space. Different devices often use different color spaces. Color space conversion is the process of converting an image from one color space to another.
Color spaces can be quite large. For example, display devices, such as computer monitors, televisions, and projectors, often use mixtures of red (R), green (G), and blue (B) color components, or “primaries.” The color of each pixel displayed on a screen can be defined as some combination of these RGB primaries. If each color in an RGB color space is represented, for example, using 8-bits per primary or “channel”, then each pixel in an image may comprise three bytes of color information. In which case, this 8-bit/channel RGB color space can theoretically display 224, or about 16.77 million, different colors.
Mapping in excess of 16 million data points from one color space to another can be time consuming and resource intensive. Therefore, many color conversion techniques rely on interpolation. To interpolate data points, a certain number of data points are first mapped from one color space to another using any of a number of mathematical or experimental approaches. These data points comprise a set of “control points,” having predetermined values in both color spaces. Then, when a data point is encountered that has not already been mapped, a value for the data point in the second color space can be estimated based on the position of the data point relative to the control points in the first color space.